
//创建服务器
const express = require('express');
const app = express();
app.listen(3000, () => {
    console.log('服务器已开启');
});
// js引入MySQL
const mysql = require('mysql');

const path = require('path');

const svg = require('svg-captcha');

const session = require('cookie-session');

// 引入封装好的myquery方法
const myquery = require('./fz');


// // 创建mysql 数据库的配置连接
// let con = mysql.createConnection({
//     host: 'localhost',//用户名
//     port: 3306,//端口号
//     user: 'root',//用户名
//     password: 'root',//密码
//     database: 'demo2'//数据库
// })
// // 连接mysql
// con.connect();


// 资源静态化
app.use(express.static(path.join(__dirname, 'static')));

// 接收post参数中间件
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
// session中间件
app.use(session({ keys: ['hahahah'] }));

// 渲染登录页面
app.get('/login', (req, res) => {
    res.sendFile(path.join(__dirname, 'login.html'));
})
//  渲染注册页面
app.get('/register', (req, res) => {
    res.sendFile(path.join(__dirname, 'register.html'));
})

//验证码生成
app.get('/code', (req, res) => {
    // 创建验证码
    let captcha = svg.create({
        // 写具体设置的样式
        size: 4,//验证码的长度
        ignoreChars: "10oIl",//设置要忽略的字符
        noise: 5,//干扰线条数
        color: true,//文字颜色 只有true 和false
        background: '#ff0'//背景色
    });
    // 设置mime类型 为svg
    res.type('svg');

    // 验证码内容
    req.session.yz = captcha.text;

    // 把svg图响应出去 显示出来
    res.send(captcha.data);

    // console.log(req.session.yz);
});

// 登录
app.post('/login', async (req, res) => {
    // 1 接参
    let { tel, pass } = req.body;

    //  输入框不能为空
    if (!tel || !pass) {
        res.send({ code: 400, msg: '请输入有效内容' })
    }

    //2 判断
    let sql = `SELECT*FROM register WHERE username='${tel}' AND pass=${pass}`;


    // 密码和用户名一致 登陆成功  不一致 登陆失败
    let [err, result] = await myquery(sql);

    if (err) {
        res.send({ code: 500, msg: err });
        return;
    }

    if (result.length > 0) {
        res.send({ code: 300, msg: '登陆成功' })
    } else {
        res.send({ code: 400, msg: '用户名或密码输入错误' })
    }


})

// 注册
app.post('/register', async (req, res) => {
    // 获取验证码参数信息
    console.log(req.session.yz);
    let haha = req.session.yz;
    console.log(haha);

    // 接参
    let { tel, pass, pass2, pass3 } = req.body;
    console.log(tel, pass, pass3);

    //输入框不能为空
    if (!tel || !pass || !pass2 || !pass3) {
        res.send({ code: 400, msg: "输入框不能为空" });
        return;
    };

    // 判断两次的密码是否一致
    if (pass != pass2) {
        res.send({ code: 400, msg: "两次输入内容不一致" });
        return;
    }


    // 验证码 判断是否一致
    if (pass3 != haha) {
        res.send({ code: 400, msg: '验证码输入错误' });
        return;
    }

    // 封装

    let sql = `SELECT * FROM register WHERE username = '${tel}'`;

    let [err, result] = await myquery(sql);
    // console.log(err, result);

    if (err) {
        res.send({ code: 500, msg: err });
        return;
    }
    // 判断用户是否存在
    if (result.length > 0) {
        res.send({ code: 400, msg: '用户名已存在' });
        return;
    }

    // 不存在添加进数据库
    let sql1 = `insert into register (username,pass) values ('${tel}','${pass}')`;
    //
    let [err1, result1] = await myquery(sql1);
    // console.log(err1, result1);

    if (err1) {
        res.send({ code: 500, msg: err1 })
        return;
    }


    if (result1.insertId > 0) {
        res.send({ code: 200, msg: '注册成功' })
    } else {
        res.send({ code: 400, msg: '请稍后再试' })
    }

})











